package com.demo.java.OD51_100.OD84;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【太阳能板最大面积】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145653880
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            try {

                String[] numStrings = scanner.nextLine().split(",");
                int[] nums = new int[numStrings.length];
                // 将字符串数组转换为整数数组
                for (int i = 0; i < numStrings.length; i++) {
                    nums[i] = Integer.parseInt(numStrings[i].trim());
                }
                // 创建一个数组dp，用于存储计算结果，数组长度与输入整数数组长度相同
                int[] dp = new int[nums.length];
                // 遍历输入整数数组
                for (int i = 0; i < nums.length; i++) {
                    // 从当前位置i开始，继续遍历数组找到所有可能的子数组
                    // 并计算每个子数组中元素的最小值，并与当前最大值比较，得到最大值
                    for (int j = i + 1; j < nums.length; j++) {
                        dp[i] = Math.max(dp[i], (j - i) * findMin(nums, i, j));
                    }
                }
                // 在所有计算得到的最大值中找到最终的最大值
                int maxResult = findMax(dp);
                // 输出结果
                System.out.println(maxResult);
            } catch (Exception e) {
                // 当输入不符合预期或遇到其他异常时，退出循环，结束程序
                break;
            }
        }
    }

    // 找到给定数组nums中从索引start到end的子数组中的最小值
    private static int findMin(int[] nums, int start, int end) {
        int min = nums[start];
        for (int i = start + 1; i <= end; i++) {
            if (nums[i] < min) {
                min = nums[i];
            }
        }
        return min;
    }

    // 找到给定数组nums中的最大值
    private static int findMax(int[] nums) {
        int max = nums[0];
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] > max) {
                max = nums[i];
            }
        }
        return max;
    }
}